<?php

interface DBAL
{
	public function quote ($str);
	public function query ($sql);
}

interface DBResult
{
	public function next ();
}
interface StoreResult
{
	public function next ();
}


interface ObjectStore
{
	// * -> o
	public function create ($type, $data, $oid=NULL);
	// * => [o] => [o]
	public function find ($criteria, $limit=0, $offset=0);
	// o => [o] => ()
	public function save ($data);
	// * => [o] => ()
	public function delete ($criteria);
}
interface TreeStore
{
	// * -> o
	public function create ($data, $type, $id=0);
	// * => [o] => [o]
	public function find ($criteria, $limit=0, $offset=0);
	// o => [o] => ()
	public function save ($data);
	// * => [o] => ()
	public function delete ($criteria);
}

interface StoreInstaller
{
	public function install ();
	public function createClass ($type, $definition, $indexes=NULL);
}

interface ObjectClass
{
	/**
	 * Вернуть список свойств класса.
	 * 
	 * @access public
	 * @return array
	 */
	public function getProperties ();
	/**
	 * Классифицировать объект.
	 * 
	 * @param mixed $object объект для классификации
	 * @access public
	 * @return void
	 */
	public function classificate($object);
	/**
	 * Вернуть части запроса для поиска объекта.
	 * 
	 * @param mixed $criteria критерии поиска объекта
	 * @access public
	 * @return array
	 */
	public function searchQuery ($criteria);
}

